package com.sufen.common.lag2;


import com.sufen.common.lag2.service.IMddMultiLangBaseService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import org.springframework.util.StringUtils;

/**
 * @description: 处理系统中的多语问题
 * @function:
 * @author: Liu Menglei
 * @Date: 2021/11/3 0003 20:47
 */
@Slf4j
public class MultilingualUtil implements ApplicationContextAware {

    //他的赋值是通过实现ApplicationContextAware的接口来实现的,这个是项目中一个较为核心的实现
    public static ApplicationContext applicationContext;

    public static boolean getI18nConfigEnable(){
        //这里应该调用的是一个关于多语的服务
        IMddMultiLangBaseService service = applicationContext.getBean("mddMultiLangBaseServiceImpl",
                IMddMultiLangBaseService.class);
        boolean flag = service.getEnableI18n();
        log.info("当前项目的多语状态为："+(flag?"OPEN":"CLOSE"));
        return flag;//表示我们是开启了多无服务的
    }

    //按照语义来理解这应该是本地翻译的服务
    //这里面为什么还要再包一层呢？不甚理解！！！！！！！！！
    public static String getLocalTransMessage(String code){
        return MessageUtils.getMessage(code);
    }

    //这里看一看到参数是又接收到了一个defaultValue的，似乎的多语但是使得整个程序变得更
    //简洁了,因为他返回的是一个可以直接用的值，在这里面是不需要在做判断了的
    public static String getFWMessage(String code,String defaultValue){
        String result = null;
        //boolean flag = getI18nConfigEnable();
        if(false){
            //表示如果要是开启了多语的设置则开始在本地获取多语的信息进行处理
            result = getLocalTransMessage(code);
        }
        //这里按理说应该是使用StringUtils的但是没有引入合适的包
        return !StringUtils.isEmpty(result)?result:defaultValue;
    }

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        MultilingualUtil.applicationContext = applicationContext;
    }
}